import java.util.*;

import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Bob here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Bob extends Actor
{
    private int numeroImagen;// te indica que imagen va a aparecer 0 o 1
    private int contImagen;//contador para que no se empalmen las imagenes hasta contar a un cierto numero 
    private int contParado;//controla el tiempo en que se mantendra parado
    private GreenfootImage [][] imagenesBob;//matriz para guardar las imagenes de bob
    private SimpleTimer reloj ;// se utiliza para controlar el disparo
    private GreenfootSound comer;
    private GreenfootSound risa;
    private GreenfootSound blop;
    public Bob()
    {
        numeroImagen =0;
        contImagen=0;
        contParado=0;
        imagenesBob = new GreenfootImage[3][2];
        reloj = new SimpleTimer();
        reloj.mark();
        comer = new GreenfootSound("Comida.mp3");
        risa = new GreenfootSound("Risa.mp3");
        blop = new GreenfootSound("gota.mp3");
    }
   /**  Se manda llamar Métodos desde el mundo Pecera para controlar los puntos la vidas y las agujas 
      que se hacen, tambien se controlan sus movimientos **/
    public void act() 
    {
        this.GuardaBobImagen();
        
        
        if(Greenfoot.isKeyDown("left"))
        {
            this.move(-5);
            this.cambia(imagenesBob[2][0],imagenesBob[2][1]);
        }
       
        
        if(Greenfoot.isKeyDown("right"))
        {
            
            this.move(5);
            
            this.cambia(imagenesBob[0][0],imagenesBob[0][1]);
       
        }
        
      
        if(contParado == 0&&(!Greenfoot.isKeyDown("right")&&!Greenfoot.isKeyDown("left")))
        {
            setImage(imagenesBob[1][0]);
            contParado=70;
            
        }
     
       contParado--;
       if(isTouching(Hamburgesa.class))
       {
           ((Pecera)getWorld()).aumentaPuntos();
           comer.play();
       }
       if(isTouching(Flor.class))
       {
           ((Pecera)getWorld()).aumentaVidas();
       }
       if(isTouching(Burbuja.class))
       {
           blop.play();
           ((Pecera)getWorld()).RestaVidas();
       }
        if(isTouching(Aguja.class))
       {
           ((Pecera)getWorld()).aumentaAgujas();
       }
       if( Greenfoot.isKeyDown("up")&&reloj.millisElapsed()>=1000)
       {
           
          ((Pecera)getWorld()).dispara();
          reloj.mark();
       }
       cambiaHamburguesa();
       cambiaBurbuja();
       removeTouching(Patricio.class);
       removeTouching(Hamburgesa.class);
       removeTouching(Aguja.class);
       removeTouching(Flor.class);
       removeTouching(Burbuja.class);
       removeTouching(Plankton.class);
    }  
    /**Se guardan las imagenes de Bob en una matriz**/
    public void GuardaBobImagen()
    {
        GreenfootImage aux;
        
                aux= new GreenfootImage("BOBC1.png");
              
                imagenesBob [0][0]= aux;
                aux= new GreenfootImage("BONC22.png");
                imagenesBob [0][1]= aux;
                aux= new GreenfootImage("BOBP1.png");
                
                imagenesBob [1][0]= aux;
                
                aux= new GreenfootImage("BOBC1.png");
                aux.mirrorHorizontally();
                imagenesBob [2][0]= aux;
                aux= new GreenfootImage("BONC22.png");
                aux.mirrorHorizontally();
                imagenesBob [2][1]= aux;
                
            
        
    }
    /**Cambia la imagen del actor*/
    public void cambia(GreenfootImage imagen1, GreenfootImage imagen2) 
    {
        if(contImagen==0){
            if(numeroImagen == 0)
            {
                setImage(imagen1);
                numeroImagen=1;
            }else
                {
                    setImage(imagen2);
                    numeroImagen=0;
                }
            contImagen=10;    
                
            }else
            contImagen--;
        //System.out.println(cambiaImagen);
    }
    /**Metodo para cambiar a hamburguesas los extras en un determinado rango cuando se toca a patricio
       -El rango se toma al rededor de Patricio
       **/
    public void cambiaHamburguesa()
    {
        int x, y;
        if(isTouching(Patricio.class)){
           Patricio patricio =(Patricio) getOneIntersectingObject(Patricio.class);
            x= patricio.getX();
            y= patricio.getY();
            List<Actor> objetos = patricio.alrededor(300);
            getWorld().removeObject(patricio);
            int xi,yi;
            for(Actor obj: objetos)
            {
              xi =obj.getX();
              yi=obj.getY();
              if(obj!=this && obj!=((Pecera)getWorld()).getFlecha())
              {
                  getWorld().addObject(new Hamburgesa(),xi,yi);
                  getWorld().removeObject(obj);
                  
              }
              
            }
            
        }
    }
    /**Metodo para cambia a burbujas los extras en un determinado rango al tocar a Plankton
       -El rango se toma al rededor de Plankton 
       **/
    public void cambiaBurbuja()
    {
        int x, y;
        if(isTouching(Plankton.class))
        {
            risa.play();
           Plankton plankton =(Plankton) getOneIntersectingObject(Plankton.class);
            x= plankton.getX();
            y= plankton.getY();
            List<Actor> objetos = plankton.alrededor(300);
            getWorld().removeObject(plankton);
            int xi,yi;
            for(Actor obj: objetos)
            {
              xi = obj.getX();
              yi = obj.getY();
              if(obj!=this && obj!=((Pecera)getWorld()).getFlecha())
              {
                  getWorld().addObject(new Burbuja(),xi,yi);
                  getWorld().removeObject(obj);
                  
              }
              
            }
            
        }
    }
}
